with v_string;
use v_string;

package currency is
    type dollar is private;
    type dollarPtr is access dollar;

    function add ( in_amount1 : dollar; in_amount2 : dollar ) return dollar;
    function subtract ( in_base : dollar; in_subtractor : dollar ) return dollar;
    function multiply ( base : dollar; multiplier : float ) return dollar;
    function float_to_dollar ( float_amount : float ) return dollar;
    function dollar_to_float ( dollar_amount : dollar ) return float;
    function vstring_to_dollar ( vstr : vstring ) return dollar;

    function "-" (in_right : dollar) return dollar;
    function "<" (left : dollar; right : dollar) return Boolean;
    function ">" (left : dollar; right : dollar) return Boolean;
    
    procedure print ( in_dollar : dollar);

private
    type dollar is
	record
	    whole : natural;
	    cents : natural;
	    is_positive : boolean;
	end record;
end currency;
